A typical enterprise Java™ application may include a server servicing a lot of clients. (JAVA and all JAVA-based trademarks and logos are trademarks or registered trademarks of Oracle and/or its affiliates.) In a banking application example hundreds of customers connect to a server via client applications (“clients”) to effect transactions on their account (make a balance enquiry, a withdrawal, etc.). Such transactions are actually a remote call to the server and require data to be exchanged between the client and server.
Distributed computing in JAVA makes use of Remote Method Invocation (RMI)-Java Remote Method Protocol (JRMP) and RMI-Internet Inter-ORB Protocol (IIOP) technologies, wherein “ORB” refers to an Object Request Broker.
JRMP is a JAVA-specific, stream based protocol for JAVA-to-JAVA remote calls, requiring both clients and server to use JAVA objects. RMI-IIOP denotes the JAVA RMI interface over the IIOP, which delivers Common Object Request Broker Architecture (CORBA) distributed computing capabilities to the JAVA platform. With features inherited from CORBA, software components that work together can be written in different languages (for example, C++ and JAVA).
Both RMI-JRMP and RMI-IIOP leverage JAVA serialization to communicate (transfer parameters) between components. Marshaling involves serialization and is a process of decomposing an instantiated object into a data format that may be transferred via a message. Un-marshaling is a process of reconstructing an instantiated object at a receiving device in response to receipt of a message, including an object formatted as serialized/marshaled data.